package es.mgil.ejercicios.clase;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.WindowManager;
import android.widget.TextView;

public class Teclado extends Activity implements OnKeyListener {
	private StringBuilder mensajes = new StringBuilder();
	private TextView visor;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		visor = new TextView(this);
		visor.setText("Pulsa teclas...");
		visor.setOnKeyListener(this);
		visor.setFocusableInTouchMode(true);
		visor.requestFocus();
		getWindow().setSoftInputMode(
				WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

		setContentView(visor);
	}

	@Override
	public boolean dispatchKeyEvent(KeyEvent event) {
		super.dispatchKeyEvent(event);

		mensajes.setLength(0);

		switch (event.getAction()) {
		case KeyEvent.ACTION_DOWN:
			mensajes.append("pulsa ");
			break;
		case KeyEvent.ACTION_UP:
			mensajes.append("levanta ");
			break;
		case KeyEvent.ACTION_MULTIPLE:
			mensajes.append("rara ");
			break;
		}

		mensajes.append(event.getKeyCode() + ", ");
		if (event.getCharacters() == null) {
			mensajes.append((char) event.getUnicodeChar());
		} else {
			mensajes.append(event.getCharacters());
		}

		visor.setText(mensajes.toString());

		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
			return false;
		} else {
			return true;
		}
	}

	// /**
	// * Normalmente se usa para teclados hardware
	// */
	@Override
	public boolean onKey(View v, int keyCode, KeyEvent event) {
		return false;
	}
}
